﻿<?php
ini_set("display_errors",false);
define('aut_ip',true);
define('aut_user',false);
include_once 'include/funcoes.php';
var_dump(buscarExames('0009997'));
exit;

if(aut_ip)
{
 // pegando o endere�o remoto ou definindo-o como desconhecido
$ip = (isset($_SERVER['REMOTE_ADDR'])?$_SERVER['REMOTE_ADDR']:'unknown');
//pegando o endere�o remoto em caso de um firewall no ip externo que redireciona para o IP interno dando um Forward e alterando o valor do IP. Isso faz com que REMOTE_ADDR tenha o ip do seu firewall ao inv�s do ip do cliente.
//$ip = (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR']!='IP DO FIREWALL'?$_SERVER['REMOTE_ADDR']:'unknown'); 
 // pegando o endere�o que foi repassado (se houver)
$forward = ( isset($_SERVER['HTTP_X_FORWARDED_FOR'])?$_SERVER['HTTP_X_FORWARDED_FOR']:false); 
// verifica se existe um redirecionado e o retorna, caso contr�rio mant�m o remoto.
$ip=( ($ip=='unknown' &&  $foward && $forward!='unknown' )?$forward:$ip); 

$ips=explode('#',pegar_valor('ip'));
$perm_ip=false;
foreach ($ips as $lip)
{
//echo "call: ".$ip." server: ".$lip;
if($ip==$lip )
	$perm_ip=true; 
}
if(!$perm_ip)
{
	echo "<h1>Este ip: ".$ip." nao tem acesso ao servidor.</h1>";
	echo "<h3>Mais informacoes, consulte o administrador</h3>";
	exit;
}
}

if(aut_user)
{
    $realm = 'Área Restrita - WS GAL';
    //user => password
    $users = array('admin' => 'senha123');
    // Here is the FIX
    if(empty($_SERVER['PHP_AUTH_DIGEST'])){
        $_SERVER['PHP_AUTH_DIGEST'] = $_SERVER['DEVMD_AUTHORIZATION'];
    }
    if (empty($_SERVER['PHP_AUTH_DIGEST'])) {
        header('HTTP/1.1 401 Unauthorized');
        header('WWW-Authenticate: Digest realm="'.$realm.'",qop="auth",nonce="'.uniqid().'",opaque="'.md5($realm).'"');
        die('O usu�rio cancelou a entrada');
    }
     // Analyze the PHP_AUTH_DIGEST variable
    if (!($data = http_digest_parse($_SERVER['PHP_AUTH_DIGEST'])) || !isset($users[$data['username']])){
        die('Dados inv�lidos!');
    }

    // Generate the valid response
    $A1 = md5($data['username'] . ':' . $realm . ':' . $users[$data['username']]);
    $A2 = md5($_SERVER['REQUEST_METHOD'].':'.$data['uri']);
    $valid_response = md5($A1.':'.$data['nonce'].':'.$data['nc'].':'.$data['cnonce'].':'.$data['qop'].':'.$A2);
 
    if ($data['response'] != $valid_response)
        die('Dados inv�lidos!');
}
    // OK, valid username & password
   // echo 'Logado com usuario: ' . $data['username'];
 
    // Function to parse the http auth header
    function http_digest_parse($txt){
        // Protect against missing data
        $needed_parts = array('nonce'=>1, 'nc'=>1, 'cnonce'=>1, 'qop'=>1, 'username'=>1, 'uri'=>1, 'response'=>1);
        $data = array();
        $keys = implode('|', array_keys($needed_parts));
 
        preg_match_all('@(' . $keys . ')=(?:([\'"])([^\2]+?)\2|([^\s,]+))@', $txt, $matches, PREG_SET_ORDER);
 
        foreach ($matches as $m) {
            $data[$m[1]] = $m[3] ? $m[3] : $m[4];
            unset($needed_parts[$m[1]]);
        }
 
        return $needed_parts ? false : $data;
    }
 
//error_reporting(E_ALL);
require_once('library/nusoap.php');

//var_dump(buscarExames('2693615'));
//exit;

$server = new soap_server;
// inicializa o suporte a WSDL
$server->configureWSDL('server.gal','lab:server.gal');
$server->wsdl->schemaTargetNamespace = 'lab:server.gal';
/*************************************************************************************
                                       ESTRUTURAS 
Estrutura de um registro a ser enviado
**************************************************************************************/
$server->wsdl->addComplexType(
    'registro',
    'complexType',
    'struct',
    'all',
    '',
    array(
             'co_amostra'  => array('name' => 'co_amostra'  , 'type' => 'xsd:string'),
             'co_requisicao'    => array('name' => 'co_requisicao'    , 'type' => 'xsd:string'),
             'no_paciente'   => array('name' => 'no_paciente'    , 'type' => 'xsd:string'),
             'nu_idade'     => array('name' => 'nu_idade'     , 'type'  => 'xsd:string'),
			 'dt_nascimento'  => array('name' => 'dt_nascimento'  , 'type' => 'xsd:string'),
             'co_sexo'    => array('name' => 'co_sexo'    , 'type' => 'xsd:string'),
             'no_exame'     => array('name' => 'no_exame'     , 'type'  => 'xsd:string'),
			 'dt_coleta'  => array('name' => 'dt_coleta'  , 'type' => 'xsd:string'),
             'co_seq_examereq'    => array('name' => 'co_seq_examereq'    , 'type' => 'xsd:string'),
             'co_matbio'   => array('name' => 'co_matbio'    , 'type' => 'xsd:string'),
             'co_status'     => array('name' => 'co_status'     , 'type'  => 'xsd:string'),
			 'co_cnes'  => array('name' => 'co_cnes'  , 'type' => 'xsd:string'),
             'co_exame'    => array('name' => 'co_exame'    , 'type' => 'xsd:string'),
			 'co_metodo'    => array('name' => 'co_metodo'    , 'type' => 'xsd:string'),
			 'co_reteste'    => array('name' => 'co_reteste'    , 'type' => 'xsd:string'),
			 'co_worklist'    => array('name' => 'co_worklist'    , 'type' => 'xsd:string')
			 
    )

);
/*
Estrutura de um array de registro enviado
*/
$server->wsdl->addComplexType(
'registros',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(
array('ref'=>'SOAP-ENC:arrayType',
'wsdl:arrayType'=>'tns:registro[]')
),
'tns:registro'
);



/*
ADICIONANDO O TIPO DE RESPOSTA DA GRAVA��O DOSRESULTADOS NO GAL - A ESTRUTURA RESPOSTA
CONTEM APENAS UM REGISTRO, QUE SER� UTILIZADA NA 
ESTRUTURA RESPOSTAS E PODE-SE PASSAR V�RIOS RESPOSTAS
*/

$server->wsdl->addComplexType(
    'resposta',
    'complexType',
    'struct',
    'all',
    '',
    array(
             'co_exameseq'  => array('name' => 'co_exameseq'  , 'type' => 'xsd:string'),
             'co_resposta'    => array('name' => 'co_resposta'    , 'type' => 'xsd:string'),
             'ds_resposta'   => array('name' => 'ds_resposta'    , 'type' => 'xsd:string')
    )

);
/*
Estrutura de um array de respostas enviado
*/
$server->wsdl->addComplexType(
'respostas',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(
array('ref'=>'SOAP-ENC:arrayType',
'wsdl:arrayType'=>'tns:resposta[]')
),
'tns:resposta'
);

/*
ADICIONANDO O TIPO DE RETORNO DO GAL - A ESTRUTURA REGISTRO �
CONTEM APENAS UM REGISTRO DE RESULTADO DE UM EXAME, QUE SER� UTILIZADA NA 
ESTRUTURA RETORNO E PODE-SE PASSAR V�RIOS RESULTADOS PARA UM EXAME
*/

$server->wsdl->addComplexType(
    'resultado',
    'complexType',
    'struct',
    'all',
    '',
   array(
        'co_examereq'  => array('name' => 'co_examereq'  , 'type' => 'xsd:string'),
        'co_requisicao'    => array('name' => 'co_requisicao'    , 'type' => 'xsd:string'),
        'laboratorio'   => array('name' => 'laboratorio'    , 'type' => 'xsd:string'),
        'no_paciente'   => array('name' => 'no_paciente'    , 'type' => 'xsd:string'),
        'co_exame'     => array('name' => 'co_exame'     , 'type'  => 'xsd:string'),
        'co_metodo'  => array('name' => 'co_metodo'  , 'type' => 'xsd:string'),
        'registroInterno'    => array('name' => 'registroInterno'    , 'type' => 'xsd:string'),
        'kit'     => array('name' => 'kit' , 'type'  => 'xsd:string'),
        'reteste'  => array('name' => 'resteste'  , 'type' => 'xsd:string'),
	    'loteKit' => array('name' => 'loteKit'  , 'type' => 'xsd:string'),
	    'dataProcessamento' => array('name' => 'dataProcessamento'  , 'type' => 'xsd:string'),
	    'valorReferencia' => array('name' => 'valorReferencia'  , 'type' => 'xsd:string'),
	    'observacao' => array('name' => 'observacao'  , 'type' => 'xsd:string'),
  	    'resultado'  => array('name' => 'resultado'  , 'type' => 'xsd:string'),
        'valor'    => array('name' => 'valor'    , 'type' => 'xsd:string'),
        'do_'   => array('name' => 'do_'    , 'type' => 'xsd:string'),
        'cut_off'     => array('name' => 'cut_off'     , 'type'  => 'xsd:string'),
	    'genotipo'  => array('name' => 'genotipo'  , 'type' => 'xsd:string'),
        'conclusao1'  => array('name' => 'conclusao1'    , 'type' => 'xsd:string'),
        'conclusao2'  => array('name' => 'conclusao2'     , 'type'  => 'xsd:string'),
	    'conclusao3'  => array('name' => 'conclusao3'  , 'type' => 'xsd:string'),
        'conclusao4'  => array('name' => 'conclusao4'    , 'type' => 'xsd:string')
	)
);

$server->wsdl->addComplexType(
'resultados',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:resultado[]')),
'tns:resultado'
);

$server->wsdl->addComplexType(
    'teste_server',
    'complexType',
    'struct',
    'all',
    '',
    array(
             'co_teste'    => array('name' => 'co_resposta'    , 'type' => 'xsd:string'),
             'ds_teste'   => array('name' => 'ds_resposta'    , 'type' => 'xsd:string')
    )

);

/*************************************************************************************
                                REGISTROS DA FUN��ES
Registra o m�todo a ser oferecido Buscar os exames , s�o buscados 50 exames por vez
**************************************************************************************/



$server->register('buscarExames',        // method name
    array('param'  => 'xsd:string'),        // input parameters
    array('return'   => 'tns:registros'),     // output parameters
	'lab:server.gal', //namespace
	'lab:server.gal#examesSelecionados', //soapaction
	'rpc', //style
	'encoded', //use
	'Retorna os exames selecionados' //documenta��o do servi�o
);
/*
Registra o m�todo a ser oferecido Marcar os exames enviados
para o interfacemento
*/
$server->register('marcarExamesEnviados',        // method name
    array('codigo'  => 'xsd:string'),        // input parameters
    array('return'   => 'xsd:string'),     // output parameters
	'lab:server.gal', //namespace
	'lab:server.gal#examesMarcados', //soapaction
	'rpc', //style
	'encoded', //use
	'Retorna resposta dos exames enviados com sucesso!' //documenta��o do servi�o
);


// novo
$server->register('gravarResultados',        // method name
    array('resultados'  => 'tns:resultados'),        // input parameters
    array('return'   => 'tns:respostas'),     // output parameters
	'lab:server.gal', //namespace
	'lab:server.gal#resultadosExames', //soapaction
	'rpc', //style
	'encoded', //use
	'Gravar resultados de exames interfaceados com sucesso!' //documenta��o do servi�o
);

//fim novo
$server->register('testarServidor',        // method name
    array('codigo'  => 'xsd:string'),        // input parameters
    array('return'   => 'xsd:string'),     // output parameters
	'lab:server.gal', //namespace
	'lab:server.gal#examesMarcados', //soapaction
	'rpc', //style
	'encoded', //use
	'Retorna resposta dos teste com banco de dados do servidor!' //documenta��o do servi�o
);

/*************************************************************************************
                                FUN��ES
m�todo a ser oferecido Buscar os exames , s�o buscados 50 exames por vez
**************************************************************************************/
function buscarExames($colab) {
//var_dump($tLab);
//echo "resp.: ".$tLab[co_lab];

	require_once('include/conexao.php');
	$results = array();
        $sql = "SELECT PA.NO_PACIENTE, PA.NU_IDADE, PA.DT_NASCIMENTO, PA.CO_SEXO, RE.CO_REQUISICAO, 
			RE.CO_CNES_REQUISITANTE AS CO_CNES, AM.CO_SEQ_AMOSTRA, AM.DT_COLETA, AM.CO_MATBIO, 
			ER.CO_SEQ_EXAMEREQ, ER.CO_EXAME, ER.CO_METODO, ER.CO_WORKLIST_GAL, ER.QT_RETESTE, 
			EX.NO_EXAME, SE.CO_STATUS, SE.CO_LABOR 
		FROM TB_BMH_PACIENTE AS PA 
		INNER JOIN TB_BMH_REQUISICAO AS RE ON RE.CO_REQUISICAO = PA.CO_REQUISICAO 
		INNER JOIN TB_BMH_AMOSTRA AS AM ON RE.CO_REQUISICAO = AM.CO_REQUISICAO 
		INNER JOIN TB_BMH_EXAME_REQUISICAO AS ER ON AM.CO_SEQ_AMOSTRA = ER.CO_AMOSTRA 
		INNER JOIN TB_BMH_TIPO_EXAME AS EX ON EX.CO_EXAME = ER.CO_EXAME 
		INNER JOIN TH_BMH_STATUS_EXAME AS SE ON SE.CO_EXAMEREQ = ER.CO_SEQ_EXAMEREQ 
		WHERE (SE.CO_LABOR = '$colab') AND (SE.TP_STATUS = 'U') AND (SE.CO_STATUS = 14) AND (ER.ST_WORKLIST = 'F')
		ORDER BY CO_SEQ_AMOSTRA ASC LIMIT $limit offset 0";
      // echo $sql;
       $res=pg_query($sql);
	
	while ($linha=pg_fetch_array($res))
	{
		$dt_coleta  =  explode(" ",$linha['dt_coleta'],100);
		$dt_coleta  =  explode("-",$dt_coleta[0],10);
		$dt_coleta  =  $dt_coleta[0]."".$dt_coleta[1]."".$dt_coleta[2];
		$dt_nasc    =  $linha['dt_nascimento'] ? explode(" ",$linha['dt_nascimento'],100) : "9999-99-99";
		$dt_nasc    =  explode("-",$dt_nasc[0],10);
		$dt_nasc    =  $dt_nasc[0]."".$dt_nasc[1]."".$dt_nasc[2];
    		$amostra    =  $linha['co_seq_amostra'];
    		$req 	    =  $linha['co_requisicao'];
    		$pac 	    =  $linha['no_paciente'];
    		$idade 	    =  $linha['nu_idade'];
    		$sexo	    =  $linha['co_sexo'];
    		$exame      =  $linha['no_exame'];
    		$co_exareq  =  $linha['co_seq_examereq'];
    		$co_mat     =  $linha['co_matbio'];
		    $status	    =  $linha['co_status'];
    		$cnes	    =  $linha['co_cnes'];
    		$co_exame   =  $linha['co_exame'];
		$co_metodo  =  $linha['co_metodo'];
		$reteste = ($linha['qt_reteste']) ? $linha['qt_reteste'] : 0;
		$worklist = $linha['co_worklist_gal'];

		$ArrayTemp= array('co_amostra'       => $amostra,
				  'co_requisicao'    => $req ,
				  'no_paciente'      => base64_encode($pac),
			 	  'nu_idade'         => $idade ,
			 	  'dt_nascimento'    => $dt_nasc ,
             	  'co_sexo'          => $sexo ,
             	  'no_exame'         => $exame ,
			 	  'dt_coleta'        => $dt_coleta ,
             	  'co_seq_examereq'  => $co_exareq ,
             	  'co_matbio'        => $co_mat ,
             	  'co_status'        => $status ,
			 	  'co_cnes'          => $cnes ,
             	  'co_exame'         => $co_exame ,
			 	  'co_metodo'        => $co_metodo,
				  'co_reteste'        => $reteste,
				  'co_worklist'        => $worklist  
                		);

		array_push($results, $ArrayTemp);

	}
	
	return $results;

}

/**************************************
Esta fun��o marca os exames que foram recebidos com sucesso na interface
e retorna o resultado do update
***************************************/
function marcarExamesEnviados($tExame) {

	require_once('include/conexao.php');
	$data = date('Y-m-d H:i:s');
	$sql = "UPDATE tb_bmh_exame_requisicao SET ST_WORKLIST='E', DT_ENVIO_EQUIPAMENTO='$data' WHERE co_seq_examereq=$tExame";
	$result=pg_query($sql);
	if($result)
		return "";
	else
		return pg_last_error($con);

}

// novo
/**************************************
Esta fun��o grava os resultados dos exames que foram recebidos com sucesso 
da interface e retorna o resultado do update
***************************************/

function verificaExame($exame){
	require_once('include/conexao.php');
	
	$sql = "SELECT COUNT(DISTINCT CO_EXAMEREQ) as TOTAL FROM TB_BMH_RESULTADO WHERE CO_EXAMEREQ = $exame";       
	$res=pg_query($sql);
        while ($linha=pg_fetch_array($res))
	{
	   if($linha['total'] == 0)
	   	return 0;
	}
	return 1;
}

function verificaPretabelado($exame,$metodo,$tipo){
	require_once('include/conexao.php');
	
	$sql = "SELECT CO_PRETAB FROM TB_BMH_CAMPO_EXAME WHERE CO_EXAME = '$exame' AND CO_METODO = '$metodo' AND CO_CAMPO = '$tipo'";       

	$res=pg_query($sql);
        while ($linha=pg_fetch_array($res))
	{	   
	   	return $linha['co_pretab'];
	}
}

function descricaoDo($exame,$metodo){
	require_once('include/conexao.php');
	
	$sql = "SELECT CO_CAMPO FROM TB_BMH_CAMPO_EXAME WHERE CO_EXAME = '$exame' AND CO_METODO = '$metodo' AND CO_CAMPO LIKE 'do_%'";       

	$res=pg_query($sql);
        while ($linha=pg_fetch_array($res))
	{	   
	   	return $linha['co_campo'];
	}
}

function gravarResultados($res) {
require_once('include/conexao.php');
$respostas = array();
$msg = "";
$error = "";
$msg_inseridos = "";
$msg_atualizados = "";
for ($i=0;$i<count($res);$i++)
{
	$sql="";
	$dataHoje = date('Y-m-d H:i:s');
	$codigo = $res[$i]['co_examereq'];
    $requisicao = $res[$i]['co_requisicao'];
	$laboratorio = $res[$i]['laboratorio'];
    $exame = $res[$i]['co_exame'];
    $metodo = $res[$i]['co_metodo'];
    $dataProcessamento = $res[$i]['dataProcessamento'];
    $resultado = $res[$i]['resultado'];
    $valor = $res[$i]['valor'];
	$do_co = $res[$i]['do_'];
	$cut_off = $res[$i]['cut_off'];
	$conclusao1 = $res[$i]['conclusao1'];	
    $observacao = $res[$i]['observacao'];
	//verificar se j� existe resultado cadastrado deste exame 
	$tpSql = verificaExame($codigo);	
	
	
	if($tpSql == 0){
		//verificar qual o tipo de pretabelado para o exame 
		$prRes = verificaPretabelado($exame,$metodo,'resultado');

		$ds_do = descricaoDo($exame,$metodo);
		//inserir resultados do exame
		$sql = "INSERT INTO TB_BMH_RESULTADO (CO_EXAMEREQ, CO_CAMPO, CO_EXAME, CO_METODO, CO_PRETAB, CO_LPRE)
			    VALUES ($codigo,'resultado','$exame','$metodo','$prRes',$resultado);
			
			    INSERT INTO TB_BMH_RESULTADO (CO_EXAMEREQ, CO_CAMPO, CO_EXAME, CO_METODO, DS_RESULTADO)
			    VALUES ($codigo,'valor','$exame','$metodo','$valor');
				
			    INSERT INTO TB_BMH_RESULTADO (CO_EXAMEREQ, CO_CAMPO, CO_EXAME, CO_METODO, DS_RESULTADO)
			    VALUES ($codigo,'cut_off','$exame','$metodo','$cut_off');
				
				INSERT INTO TB_BMH_RESULTADO (CO_EXAMEREQ, CO_CAMPO, CO_EXAME, CO_METODO, DS_RESULTADO)
			    VALUES ($codigo,'$ds_do','$exame','$metodo','$do_co');";
				
		if($conclusao!=""){
			$prCon = verificaPretabelado($exame,$metodo,'conclusao');
			$sql .= "INSERT INTO TB_BMH_RESULTADO (CO_EXAMEREQ, CO_CAMPO, CO_EXAME, CO_METODO, CO_PRETAB, CO_LPRE)
			    VALUES ($codigo,'conclusao','$exame','$metodo','$prCon',$conclusao1);";		
		}
				
		$sql .= "UPDATE TB_BMH_EXAME_REQUISICAO SET DT_PROCESSAMENTO = '$dataProcessamento', ST_WORKLIST='D', DS_OBSERVACAO_EQUIPAMENTO = '$observacao' 
			    WHERE CO_SEQ_EXAMEREQ = $codigo;
			
			    INSERT INTO TH_BMH_STATUS_EXAME (CO_EXAMEREQ, CO_LABOR, TP_STATUS, CO_STATUS, DT_STATUS, CO_USUARIO)
			    VALUES ($codigo,'$laboratorio','U',15,'$dataHoje',2);				
			";
		$msg_inseridos .= "$codigo;";
		/* respostas de exames inseridos*/
		$result = pg_query($sql);
		$resposta =pg_last_error($con);
				if($result){
					$msg .= "$codigo;";
					$ArrayTemp= array('co_exameseq' => $codigo,
				  'co_resposta'    => 1 ,
				  'ds_resposta'  =>  "Resultado inserido com sucesso!"
                		);
				}
				else{
					$ArrayTemp= array('co_exameseq' => $codigo,
				  'co_resposta'    => 2 ,
				  'ds_resposta'  =>   $resposta
                	);
				}
				array_push($respostas, $ArrayTemp);
	/*	*/

	}
	else{
		//atualizar resultado do exame
		$sql = "UPDATE TB_BMH_RESULTADO SET CO_LPRE = $resultado WHERE CO_EXAMEREQ = $codigo AND CO_CAMPO = 'resultado';
			    UPDATE TB_BMH_RESULTADO SET DS_RESULTADO = '$valor' WHERE CO_EXAMEREQ = $codigo AND CO_CAMPO = 'valor';
			    UPDATE TB_BMH_RESULTADO SET DS_RESULTADO = '$do_co' WHERE CO_EXAMEREQ = $codigo AND CO_CAMPO = '$ds_do';
				UPDATE TB_BMH_RESULTADO SET DS_RESULTADO = '$cut_off' WHERE CO_EXAMEREQ = $codigo AND CO_CAMPO = 'cut_off';";
		if($conclusao!=""){
			$sql .= "UPDATE TB_BMH_RESULTADO SET DS_RESULTADO = '$conclusao1' WHERE CO_EXAMEREQ = $codigo AND CO_CAMPO = 'conclusao';";		
		}
		$sql .= "UPDATE TB_BMH_EXAME_REQUISICAO SET DT_PROCESSAMENTO = '$dataProcessamento', ST_WORKLIST='D', DS_OBSERVACAO_EQUIPAMENTO = '$observacao' 
			    WHERE CO_SEQ_EXAMEREQ = $codigo;
			    INSERT INTO TH_BMH_STATUS_EXAME (CO_EXAMEREQ, CO_LABOR, TP_STATUS, CO_STATUS, DT_STATUS, CO_USUARIO)
			    VALUES ($codigo,'$laboratorio','U',15,'$dataHoje',2);
				";
		$msg_atualizados .= "$codigo;";		
		/****************
		Monta o array de respostas da grava��o dos resultados.
		Caso o pg n�o consiga executar o sql, armazena o erro na var resposta,
		sen�o codigo 1 - Resultado atualizado,
		inserindo todas as respostas no array
		*/
			$result = pg_query($sql);
			$resposta =pg_last_error($con);
				if($result){
					$msg .= "$codigo;";
					$ArrayTemp= array('co_exameseq' => $codigo,
				  'co_resposta'    => 1 ,
				  'ds_resposta'  =>  "Resultado atualizado com sucesso!"
                		);
				}
				else{
					$ArrayTemp= array('co_exameseq' => $codigo,
				  'co_resposta'    => 2 ,
				  'ds_resposta'  =>   $resposta
                	);
				}
				array_push($respostas, $ArrayTemp);

		/***************/
			}


}
//escreverLog("Exames Inseridos:".$msg_inseridos." | Exames Atualizados:".$msg_atualizados."\r\n");
//escreverLog($error);
//return $msg.$error;
return $respostas;
}
// requisi��o para uso do servi�oHTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';




/**************************************
Esta fun��o marca os exames que foram recebidos com sucesso na interface
e retorna o resultado do update
***************************************/
function testarServidor($codigo) {
require_once('include/conexao.php');
	switch ($codigo) {
		case 1: if(require_once('include/conexao.php'))
				return "OK";
				else 
				return "Erro - arquivo de conex�o n�o localizado";
				break;
		case 2: if($con)
				return "OK";
				else 
				return "Erro - Sem acesso ao banco de dados";
				break;
		
		case 3:$sql = "SELECT count(*) FROM  TB_BMH_REQUISICAO LIMIT 10 offset 0";
				if($result = pg_query($sql))
					return "OK - ".$result[0][0];
				else 
				 return "Erro - ".pg_last_error($con);
				break;
		default:if($codigo)
					return $codigo;
				else 
				 	return "Sem c�digo do laboratorio.";
				break;
	}
		
	$data = date('Y-m-d H:i:s');

		

}


/**********************************
* Fun��o para escrever Log de Erro
***********************************/
function escreverLog($mensagem)
{
$horario = date("Y-m-d");
echo "log/".$horario."_log.txt";
$arq_log = "log/".$horario."_log.txt";
fopen($arq_log, 'a+');
if (is_writable($arq_log)) {
    if (!$handle = fopen($arq_log, 'a+')) {
         echo "N�o foi poss�vel abrir o arquivo ($filename)";
         exit;
    }
    if (fwrite($handle, $mensagem) === FALSE) {
        echo "N�o foi poss�vel abrir o arquivo ($filename)\r\n";
        exit;
    }
    fclose($handle);

} else {
    echo "O Arquivo $filename n�o tem permiss�o de escrita\r\n";
}
}

//fim do novo
// requisi��o para uso do servi�o
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
?>
